package com.aifast.common.dict;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author fujian
 * @since 2022/9/9 11:30
 * 新版aifast实现的字典转译
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = DictBindSerializer.class)
public @interface DictBind {

    /**
     * 所需翻译的字典类型 如 sex
     * @return
     */
    String type() default "";

    /**
     * 字典翻译成功后展示的新字段 默认翻译字典名加上Str 如翻译字段为integer类型名称为sex ==》 生成字符串String类型的sexStr字段
     * @return
     */
    String target() default "";

    /**
     * 字典翻译模式 默认查询字典表数据
     * <br> Join是连表查询
     * @return
     */
    DictBindType mode() default DictBindType.DICT;


    /**
     * 表名
     * <br>配合DictBindType.JOIN 来使用 指定需要获取的哪张表
     * @return
     */
    String tableName() default "";

    /**
     * 表字段
     * <br>配合DictBindType.JOIN 来使用 指定需要获取的哪张表的某个字段数据
     *
     * @return
     */
    String columns() default "";

    /**
     * 对象字段是否有拼接字符串符号
     *
     * @return
     */
    String joinSymbol() default "";


}
